package com.scs.application.modules.fsd.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.scs.application.core.service.IBaseService;
import com.scs.application.modules.fsd.dto.SaveFpTempDTO;
import com.scs.application.modules.fsd.dto.SaveUserDTO;
import com.scs.application.modules.fsd.entity.FsdUser;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface FsdUserService extends IBaseService<FsdUser> {
    FsdUser findByCode(String code);

//    User findByJobNumber(String jobNumber);

    IPage<HashMap<String,Object>> getUserList(Page page, Wrapper wrapper);

    Map<String, Object>  getUsers(String keyword, Integer currentPage, Integer pageSize);

    /**
     * 对明文密码加密
     * @param plainPassword
     * @return
     */
    String encryptPassword(String plainPassword);

    /**
     * 智能柜账号登录
     * @param jobNumber 登录工号
     * @param plainPassword 明文密码
     * @return 登录成功结果
     */
    String login(String jobNumber, String plainPassword,String stationCode);

//    /**
//     * 后台管理平台登录
//     * @param userName
//     * @param plainPassword
//     * @return
//     */
//    LoginResult frontLogin(String userName, String plainPassword);

    /**
     * 后台管理平台获取登录用户信息
     * @param token
     * @return
     */
    Boolean info(String token);

    /**
     * 添加新用户
     * @return
     */
    Boolean createUser(SaveUserDTO para);

    /**
     * 修改用户信息
     * @return
     */
    Boolean editUser(SaveUserDTO para);

    /**
     * 当前账号登出
     */
    void logout(String stationCode);

    List<Object> getRelationByUser(String id);

    /**
     * 获取用户指纹模板
     * @param userId
     * @return
     */
    Object getFpTempByUser(String userId);

    /**
     * 为用户新增指纹模板
     * @param userId
     * @return
     */
    boolean createFpTemp(String userId);

    boolean editFpTemp(List<SaveFpTempDTO> fpTempDTOS);

    List<Map<String, Object>> getFpTempByUserList(List<String> userIds);

    String fingerLogin(String id,String stationCode);

    boolean synchronizeUsers();

    List<Map<String, Object>> getUserAuthLogByStationCode(String stationCode);

    Map uploadPhoto(MultipartFile file, String userId);

    String cardLogin(String id, String stationCode);

    void changePwd(String userId, String newPwd);
}
